package edu.tfh.s2.ehkbot.gerete.sensoren;

/**
 * BarcodeScanner
 * 
 * @author s2zehn
 */
public class BarcodeScanner implements Cloneable {
	public interface BarcodeScannerState extends Cloneable {
		/**
		 * @see java.lang.Object#clone()
		 */
		public Object clone();

		/**
		 * Versucht mit den Scanner einen Barcode zu Scannen.
		 * 
		 * @return Der Barcode, der Wert ist 0 wenn nichts gescannnt wurde.
		 */
		public int scanneBarcode();
	}

	public BarcodeScannerState state;

	/**
	 * Konstruktor der das State übergeben bekommt.
	 * 
	 * @param state
	 *            Das State welches das Verhalten von BarcodeScanner bestimmt.
	 */
	public BarcodeScanner(BarcodeScannerState state) {
		super();
		this.state = state;
	}

	/**
	 * @see java.lang.Object#clone()
	 */
	@Override
	public Object clone() {
		return new BarcodeScanner((BarcodeScannerState) state.clone());
	}

	/**
	 * Versucht mit den Scanner einen Barcode zu Scannen.
	 * 
	 * @return Der Barcode, der Wert ist 0 wenn nichts gescannnt wurde.
	 */
	public int scanneBarcode() {
		return state.scanneBarcode();
	}
}